Quartz Scheduler
39. Quartz调度器
Spring Boot包含有spring-boot-starter-quartzStarter,方便了使用Quartz调度器。如果Quartz可用,调度器会被自动配置(通过SchedulerFactoryBean抽象)。
以下类型的bean会被自动捡起并关联到调度器:
- JobDetail:定义一个特别的Job。- JobDetail实例能够容易地用- JobBuilderAPI创建
- Calendar
- Trigger:定义何时一个特别的Job被触发
默认的,一个内存中JobStore会被使用。但是,配置一个基于JDBC的store是可能的。如果在你的应用中DataSourcebean可用,而且spring.quartz.job-store-type属性如下配置:
spring.quartz.job-store-type=jdbc
当jdbc store被使用,模式能够在启动时被初始化:
spring.quartz.jdbc.initialize-schema=always
注 数据库会默认被检查,而且会被初始化(使用由Quartz库提供的标准脚本)。也可以使用spring.quartz.jdbc.schema属性提供一个自定义脚本。
Quartz调度器的配置能够使用Quartz配置属性(查看spring.quartz.properties.*),和SchedulerFactoryBeanCustomizerbean(允许程序化的SchedulerFactoryBean配置)来自定义 。
Job能够定义setter来注入数据映射属性。普通的bean也能够用相似的行为来注入:
public class SampleJob extends QuartzJobBean {
    private MyService myService;
    private String name;
    // Inject "MyService" bean
    public void setMyService(MyService myService) { ... }
    // Inject the "name" job data property
    public void setName(String name) { ... }
    @Override
    protected void executeInternal(JobExecutionContext context)
            throws JobExecutionException {
        ...
    }
}